package br.gendi.core;

import java.net.URL;
import java.util.ArrayList;

import HTTPClient.HTTPConnection;
import HTTPClient.HTTPResponse;
import HTTPClient.NVPair;
import br.gendi.beans.BaseGenomica;
import br.gendi.beans.Parametros;

public class Conectividade {

	public static String cortarHTML(String html, String site) throws Exception {
		int inicio = html.indexOf("location.replace(") + 19;
		int fim = html.lastIndexOf("\")");
		return site + html.substring(inicio, fim);
	}

	public static String retornarHTMLGerar(String texto, BaseGenomica base) throws Exception {
		HTTPResponse rsp = null;
		HTTPConnection con = null;
		
		URL url = new URL(base.getUrl());
		url = new URL(url.getProtocol() + "://" + url.getHost() + "/");
		con = new HTTPConnection(url);
		if (Configuracoes.isProxyAtivo())
			con.setCurrentProxy(Configuracoes.getHost(), Integer.parseInt(Configuracoes.getPort()));
		
		//con.setTimeout(10000000000);
		
		NVPair[] post = criarOutput(base, texto);

		if (base.getMetodos().equalsIgnoreCase("post")) {
			System.out.println("post!");
			rsp = con.Post(base.getFormAction(), post);
		} else {
			System.out.println("get!");
			rsp = con.Get(base.getFormAction(), post);
		}
		
		String retorno = rsp.getText();
		return retorno;
	}
	
	private static NVPair[] criarOutput(BaseGenomica base, String texto) {
		ArrayList<Parametros> param = base.getParametros();
		ArrayList<NVPair> post = new ArrayList<NVPair>();
		Parametros parametro = null;
		NVPair p = null;
		String valor = null;
		
		for (int i=0;i<param.size(); i++) {
			parametro = param.get(i);
			
			if (parametro.getValorAtual() == null)
				valor = parametro.getValorPadrao();
			else
				valor = parametro.getValorAtual();

			if (valor != null) {
				if (parametro.isBusca())
					valor = texto;
			}
			p = new NVPair(parametro.getNome(), valor);
			
			if (valor != null)
				if (valor.length() != 0) {
					post.add(p);
					System.out.println(parametro.getNome() + " ---> " + valor);
				}
		}
		NVPair retorno[] = new NVPair[post.size()];
		post.toArray(retorno);
		return retorno;
	}
}
